<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Андрей
 * Date: 11.05.12
 * Time: 16:30
 * To change this template use File | Settings | File Templates.
 */

    /*
     * Мэппер для работа с моделью комментариев
     */

    class CommentModelMapper extends DAOBaseAbstract
    {

        public function __construct()
        {
            // конструктор родителя
            parent::__construct();

            // установить данные таблицы, и primary keyы
            $this->_tableName = 'notecomments';
            $this->_primaryKey = 'commentId';
        }

        /*
         * Получить модельку комментария по Id
         */
        public function fetchCommentById($id)
        {
            if (null == $query = $this->select($id) )
                return false;

            $query = $query[0];

            $comment = new CommentModel($query['userId'], $query['noteId'], $query['commentId'], $query['text'],
                                        $query['time'], $query['date']);

            return $comment;
        }

        /*
         * Получить комментарии к определенной заметке
         */
        
        public function fetchNoteComments(CommentModel $comment)
        {
            $res = $this->select($comment->getNoteId(), 'noteId');

            $comments = array();

            if ( empty($res) )
                return $comments;

            $count = count($res);
            for($i = 0; $i < $count; $i++)
            {
                $tmpCom = new CommentModel($res[$i]['userId'], $res[$i]['noteId'],
                                           $res[$i]['commentId'], $res[$i]['text'],
                                           $res[$i]['time'], $res[$i]['date']);

                $comments[$i] = $tmpCom;
            }

            return $comments;

        }

        /*
         * Сохранение, редактирование комментария
         */
        
        public function saveComment(CommentModel $comment)
        {
            // результат действия
            $res = null;
            // данные для вставки, обновления.
            $data = array(
                        "userId" => $comment->getUserId(),
                        "noteId" => $comment->getNoteId(),
                        "text" => $comment->getText(),
                        "time" => $comment->getTime(),
                        "date" => $comment->getDate(),
                    );

            // если добавление заметки
            if ($comment->getCommentId() == null)
            {
                $res = $this->insert($data);

            } else{
                // если обновление заметки
                
                $data["commentId"] = $comment->getCommentId();
                $res = $this->update($data);
            }

            // удачно?
            if ($res)
                return true;
            else
                return false;
        }

        /*
         * Удалить коммент
         */

        public function removeComment(CommentModel $comment)
        {
            $res = $this->delete($comment->getCommentId());

            if ($res)
                return true;
            else
                return false;
        }
        
    }